// pages/feedback/feedback.js
const app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    openId: null,
    titleHint: false,
    contentHint: false,
    titleValue: '',
    contentValue: '',
    clearValue: '',
    imgList: [],
    popUpType: 'text',
    popUpShow: false,
    popUpTitle: '弹窗标题',
    popUpData: null
  },

  /**
   * 返回上一页
   */
  pageBack(){
    wx.navigateBack();
  },

  /**
   * 输入框得到焦点
   */
  titleFocus(e){
    this.setData({
      titleHint: false
    });
  },
  contentFocus(e){
    this.setData({
      contentHint: false
    });
  },

  /**
   * 输入框失去焦点
   */
  titleBlur(e){
    if(!e.detail.value){
      this.setData({
        titleHint: true
      });
    }
  },
  contentBlur(e){
    if(!e.detail.value){
      this.setData({
        contentHint: true
      });
    }
  },

  /**
   * 输入框内容改变
   */
  titleInput(e){
    this.setData({
      titleValue: e.detail.value
    });
  },
  contentInput(e){
    this.setData({
      contentValue: e.detail.value
    });
  },

  /**
   * 添加上传图片
   */
  addImg(){
    var imgList = this.data.imgList;
    if(imgList.length>=5) return;
    wx.chooseImage({
      count: 5-imgList.length,
      sizeType: ['compressed'],
      sourceType: ['album'],
      success: res=>{
        let tempFilePaths = [];
        var flag = false;
        for(var i=0; i<res.tempFiles.length; i++){
          // 只上传小于5M的图片
          if(res.tempFiles[i].size<=5242880){
            tempFilePaths.push(res.tempFiles[i].path);
          }else{
            flag = true;
          }
        }
        if(flag){
          this.setData({
            popUpType: 'text',
            popUpShow: true,
            popUpTitle: '提交反馈',
            popUpData: [
                {
                  style: '',
                  value: '上传的图片不能大于5M！'
                }
              ]
          });
        }
        this.setData({
          imgList: imgList.concat(tempFilePaths)
        });
      }
    });
  },

  /**
   * 删除上传图片
   */
  deleteImg(e){
    var imgList = this.data.imgList;
    var index = e.currentTarget.dataset.index;
    imgList.splice(index,1);
    this.setData({
      imgList: imgList
    });
  },

  /**
   * 预览上传图片
   */
  previewImg(e){
    var imgList = this.data.imgList;
    var index = e.currentTarget.dataset.index;
    wx.previewImage({
      current: imgList[index],
      urls: imgList
    });
  },

  /**
   * 提交反馈
   */
  feedback(){
    if(!this.data.titleValue||!this.data.contentValue){
      this.setData({
        titleHint: !this.data.titleValue,
        contentHint: !this.data.contentValue
      });
      return;
    }
    console.log(this.data.openId)
    // 未取得openId
    if(!this.data.openId){
      this.setData({
        popUpType: 'text',
        popUpShow: true,
        popUpTitle: '提交反馈',
        popUpData: [
            {
              style: '',
              value: '无法获取您的账号信息，请重试！'
            }
          ]
      });
      return;
    }
    wx.showLoading({
      title: '上传中',
      mask: true
    });
    this.uploadImg(res=>{
      var fileNameList = res;
      // 调用提交反馈云函数
      wx.cloud.callFunction({
        name: 'feedback',
        data:{
          title: this.data.titleValue,
          content: this.data.contentValue,
          fileNameList
        },
        success: res=>{
          console.log(res,'提交反馈');
          this.setData({
            popUpType: 'text',
            popUpShow: true,
            popUpTitle: '提交反馈',
            popUpData: [
                {
                  style: '',
                  value: res.result&&res.result.code?'提交反馈成功！':'提交反馈失败，请重试！'
                }
              ]
          });
          // 提交成功清空填写
          if(res.result&&res.result.code){
            this.setData({
              clearValue: '',
              titleValue: '',
              contentValue: '',
              imgList: []
            });
          }
        },
        fail: console.error,
        complete: ()=>{
          wx.hideLoading();
        }
      });
    });
  },
  
  /**
   * 初始化openId
   */
  initOpenId(){
    var that = this;
    // 赋值已有数据
    that.setData({
      openId: app.globalData.openId
    });
    // 监听全局变量变化
    app.watch('openId',function(value){
      that.setData({
        openId: value
      });
    });
    // 初始化setter
    app.globalData.openId = that.data.openId;
  },

  /**
   * 上传全部图片到云存储（异步）
   */
  uploadImg(callback){
    const imgList = this.data.imgList;
    let resList = [];
    let index = 0;
    if(imgList.length==0){
      if(callback) callback(resList);
      return;
    }
    new Promise((resolve, reject)=>{
      for(let url of imgList){
        // openId/时间戳.后缀名
        let fileName = new Date().getTime() + '.' + url.split('.').reverse()[0];
        wx.cloud.uploadFile({
          cloudPath: this.data.openId + '/' + fileName,
          filePath: url,
          complete: ()=>{
            resList.push(fileName);
            index++;
            // 全部上传成功后再执行回调
            if(index==imgList.length) resolve();
          }
        });
      }
    }).then(()=>{
      if(callback) callback(resList);
    });
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 初始化openId
    this.initOpenId();
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})